Coverage Report

Created: 2026-03-18 12:57

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
D:\a\scloud-dns\scloud-dns\src\utils\time.rs
Line
Count
Source
1
use std::time::{SystemTime, UNIX_EPOCH};
2
3
1
pub(crate) fn now_epoch_ms() -> u128 {
4
1
    SystemTime::now()
5
1
        .duration_since(UNIX_EPOCH)
6
1
        .map(|d| d.as_millis())
7
1
        .unwrap_or(0)
8
1
}
9
10
35
pub(crate) fn civil_from_days(days: i64) -> (i32, u32, u32) {
11
35
    let z = days + 719_468;
12
35
    let era = z / 146_097;
13
35
    let doe = z - era * 146_097;
14
35
    let yoe = (doe - doe / 1460 + doe / 36524 - doe / 146096) / 365;
15
35
    let y = yoe + era * 400;
16
35
    let doy = doe - (365 * yoe + yoe / 4 - yoe / 100);
17
35
    let mp = (5 * doy + 2) / 153;
18
35
    let d = doy - (153 * mp + 2) / 5 + 1;
19
35
    let m = mp + if mp < 10 { 
326
} else {
-99
};
20
21
35
    ((y + if m <= 2 { 
19
} else {
026
}) as i32, m as u32, d as u32)
22
35
}
23
24
32
pub(crate) fn format_unix_timestamp(secs: u64) -> String {
25
    const SECS_PER_DAY: u64 = 86_400;
26
27
32
    let days = secs / SECS_PER_DAY;
28
32
    let mut rem = secs % SECS_PER_DAY;
29
30
32
    let hour = rem / 3600;
31
32
    rem %= 3600;
32
32
    let min = rem / 60;
33
32
    let sec = rem % 60;
34
35
32
    let (year, month, day) = civil_from_days(days as i64);
36
37
32
    format!(
38
        "{:02}/{:02}/{:04}-{:02}:{:02}:{:02}",
39
        month, day, year, hour, min, sec
40
    )
41
32
}
42
43
27
pub(crate) fn format_system_time(t: SystemTime) -> String {
44
27
    let secs = t.duration_since(UNIX_EPOCH).unwrap_or_default().as_secs();
45
46
27
    format_unix_timestamp(secs)
47
27
}
48
49
24
pub fn now_unix_nano() -> String {
50
24
    let now = SystemTime::now()
51
24
        .duration_since(UNIX_EPOCH)
52
24
        .expect("Time went backwards");
53
24
    now.as_nanos().to_string()
54
24
}